- 用上下文处理器app_context_processor定义函数
- 获取session中保存的值
- 返回字典
- 在父模板中更新导航,插入登录状态判断代码。
- 注意用{% ... %}表示指令。
- { { }}表示变量
- 完成注销功能。
- 清除session
- 跳转
index.py
import configfrom flask import Flask, render_template, url_for, redirect, request,sessionfrom flask_sqlalchemy import SQLAlchemyapp = Flask(__name__)app.config.from_object(config)db = SQLAlchemy(app)class User(db.Model): __tablename__ = 'user' id = db.Column(db.Integer, primary_key=True, autoincrement=True) username = db.Column(db.String(20), nullable=False) password = db.Column(db.String(20), nullable=False) nickname = db.Column(db.String(20))db.create_all()@app.route('/')def shouye(): return render_template('text.html')@app.route('/zhuce',methods=['GET','POST'])def zhuce(): if request.method == 'GET': return render_template('zhuce.html') else: username = request.form.get('username') password = request.form.get('password') nickname = request.form.get('nickname') user1 = User.query.filter(User.username == username).first() if user1: return 'username existed' else: user1 = User(username=username, password=password, nickname=nickname) db.session.add(user1) db.session.commit() return redirect(url_for('denglu'))@app.route('/denglu',methods=['GET','POST'])def denglu(): if request.method == 'GET': return render_template('denglu.html') else: username = request.form.get('username') password = request.form.get('password') user=User.query.filter(User.username == username).first() if user: if user.password == password: session['user'] = username session.permanent = True return redirect(url_for('shouye')) else: return 'password error' else: return 'username is not existed'@app.route('/logout/')def logout(): session.clear() return redirect(url_for('shouye'))@app.route('/neirong')def fankui(): return render_template('fankui.html')@app.context_processordef mycontext(): usern=session.get('user') if usern: return { 'username':usern} else: return {}if __name__ == '__main__': app.run(debug='True')
denglu.html
{% extends "text.html" %}{% endblock %}登陆 {% block js %} {% endblock %}{% block denglu %}
父模板text.hrml
Title {% block js %}{% endblock %} {% block denglu %}{% endblock %}{% block zhuce %}{% endblock %}{% block fankui %}{% endblock %}
shouye.html
{% extends "text.html" %}首页 {% block shouye %}{% endblock %}
实验截图